
(() => {

  /* 
  需求: 下面创建一个函数, 实现功能: 根据指定的数量 count 和数据 value , 创建一个包含 count 个 value

  */
  function getArray(count: number, value: any): any[] {
    const arr: any[] = []
    for (let index = 0; index < count; index++) {
      arr.push(value)
    }
    return arr
  }

  const arr = getArray(5, 'ab') // ['ab','ab','ab','ab','ab']
  const arr2 = getArray(5, 12) //  [12, 12, 12, 12, 12]
  console.log(arr[1].length) // 问题1:  .时没有提示
  console.log(arr2[1].length) //问题2:  没错误提示



  /* 
  泛型: 不确定的类型
  函数泛型的3个操作:
    1. 定义泛型类型: 定义函数的函数名的右侧
    2. 使用泛型: 参数/返回值/函数体
    3. 指定泛型对应的具体类型: 调用函数时函数名的右侧
  */
  function getArray2<T>(count: number, value: T): T[] {
    const arr: T[] = []
    for (let index = 0; index < count; index++) {
      arr.push(value)
    }
    return arr
  }

  const arr3 = getArray2<string>(5, 'cd')
  console.log(arr3[2].length)  // .时有相应的提示
  const arr4 = getArray2<number>(5, 12)
  // console.log(arr4[2].length) // 有错误提示


})()